<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <meta name="author" content="Cassie">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="keywords" content="">
  <title>jsnotes2</title>
  <link rel="stylesheet" href=""> 
  <style>
 
  </style>
 </head>
 <body>
   <script>
  /*
  2019.04.28
  教学目录
  1、函数：定义、作用、基本语法
  2、形参、实参
  3、函数的封装
  4、return 语句
  5、作用域：全局、局部
  6、作用域链
  7、var变量提升
  8、声明未初始化，值为underfined
  9、父不能跟子要，子可跟父拿
  10、一层层向上访问
  教学内容
  1、函数定义：由关键字function、函数名和一组形参组成，用以完成某功能的语句
  2、函数作用：重复调用
  3、基本语法
  function name(arg1,arg2,...){
      //作用域
      代码块
  }
  调用：name(arg1，arg2);
   函数名也是个变量，不能重复
  */
   //1.100内偶数求和
//    let sum = 0;
//    for(let i = 1; i <= 100; i++){
//        if(i%2===0) sum+=i;
//    }
//    document.write(sum);
   //2.一棵树
   /*
   1 3 1
   2 2 3
   3 1 5
   4 0 7
   */
//    let str = "";
//    for(let i = 1;i<5;i++){
//        for(let a = 4-i ; a > 0;a--){
//           str += "&nbsp;"; 
//        }
//        for(let b = 0; b< 2*i-1;b++){
//           str += "*";
//        }
//        str+="<br/>";
//    }
//    document.write(str);
   //3.实参形参
   function num(v){
       document.write(v+"<br/>");
   }
   num(222);
   //4.封装
   function tree(tree){
       let str = ""
       for(let i = 1;i<= tree ;i++){
           for(let a = tree - i; a > 0;a--){
               str += "&nbsp;"
           }
           for(let b = 1;b <= 2 * i - 1;b++){
               str += "*"
           }
           str += "<br/>"
       }
       document.write(str);
   }
   tree(11);
   //5.return
   function mysum(v1,v2){
       return v1 + v2;
   }
   let sum1 = mysum(2,5);//使用一个变量去接收函数返回值，以便调用返回值
   let sum2 = mysum(4,7);
   num(sum1+sum2);
   //6.99以内的总和
   function sum(total){
       //设置参数默认值，即为空时
       if(total=='underfined'||null){
           total = 100;
       }
       let sum = 0;
       for(let i = 0;i<100;i++){
           sum+=i
       }
       return sum;
   }
   num(sum())//4950
   num(sum(100))//4950
   //7.n的阶乘
   function n (n){
       let sum = 1;
       for(let i = n;i > 1;i--){
          sum *= i 
       }
       return sum
   }
   num(n(3))
   //8.全局变量VS局部变量；全局作用域VS局部作用域
   //全局作用域只有一个，共享
   //Js全局对象：window对象
   //构造函数生成不同数据类型 //方法属于某个对象，即挂载，这个方法被挂载到这个对象上
   //window对象下面的属性=全局环境//顶层对象的属性空间与全局环境，VAR声明的全局变量被当成一个属性挂载到window上
   
   var mya = 1;//全局变量 
   
   </script>
 </body>
 </html>